package com.ssy.lingxi.platform.manage.service;

import com.ssy.lingxi.common.model.dto.UserLoginCacheDTO;
import com.ssy.lingxi.common.response.Wrapper;
import com.ssy.lingxi.platform.manage.api.model.dto.common.CommonIdListDTO;
import com.ssy.lingxi.platform.manage.api.model.vo.shop.ShopInnerVO;
import com.ssy.lingxi.platform.manage.api.model.vo.shop.ShopVO;
import com.ssy.lingxi.platform.manage.entity.base.Shop;
import com.ssy.lingxi.platform.manage.model.request.shop.BiddingShopRequest;
import com.ssy.lingxi.platform.manage.model.request.shop.DoorTypeRequest;
import com.ssy.lingxi.platform.manage.model.request.shop.ShopListRequest;
import com.ssy.lingxi.platform.manage.model.request.shop.SiteIdAndEnvironmentRequest;
import com.ssy.lingxi.platform.manage.model.response.EnterpriseShopListResponse;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

/**
 * @menu 商城 - 业务处理层
 * @author fhj
 * @version 2.0.0
 * @date 2020/7/20
 */
public interface IShopService {

    Wrapper<List<ShopVO>> shopAll();

    Wrapper<ShopVO> shopDetails(Long id);

    Wrapper<List<Shop>> findShopsBySiteId(Long siteId, Integer type);

    Wrapper<List<ShopVO>> shopAllByShopType(Integer shopType);

    Wrapper<List<ShopVO>> findAllByShopTypeAndEnvironment(Integer shopType, Integer environment);

    Wrapper<List<Shop>> findShopsBySiteIdAndEnvironment(SiteIdAndEnvironmentRequest request);

    Wrapper<List<Shop>> findByDoorType(DoorTypeRequest request, HttpServletRequest httpServletRequest);

    Wrapper<List<Shop>> findByMemberType(UserLoginCacheDTO user);

    void initToRedis();

    Wrapper<List<ShopVO>> shopByIdList(CommonIdListDTO request);

    Wrapper<List<Shop>> listAdorn(ShopListRequest request);

    Wrapper<List<ShopInnerVO>> shopByIds(CommonIdListDTO request);

    Wrapper<List<ShopVO>> byShopIds(CommonIdListDTO request);

    Wrapper<Boolean> openMro(Long shopId);

    Wrapper<List<EnterpriseShopListResponse>> listEnterpriseShopBySite(Long siteId, UserLoginCacheDTO sysUser);


    Wrapper<List<Shop>> findShopsByShopType(BiddingShopRequest request, UserLoginCacheDTO sysUser);
}
